From: robertl Date: Sun, 22 Aug 2010 19:37:55 +0000 (+0000) Subject: Add erase_t option to garmin to erase existsing courses when writing new ones. X-Git-Tag: archive/raspbian/1.10.0+ds-2+rpi1~1^2~12^2~16^2~17 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=b527b77f5bed32fd3696b01bc960c85cc7d8a716;p=gpsbabel.git Add erase_t option to garmin to erase existsing courses when writing new ones. --- diff --git a/garmin.c b/garmin.c index fd01b6f2a..73155d5f7 100644 --- a/garmin.c +++ b/garmin.c @@ -41,6 +41,7 @@ static GPS_PTrack *cur_tx_tracklist_entry; static int my_track_count = 0; static char *getposn = NULL; static char *poweroff = NULL; +static char *eraset = NULL; static char *resettime = NULL; static char *snlen = NULL; static char *snwhiteopt = NULL; @@ -68,6 +69,8 @@ arglist_t garmin_args[] = { NULL, ARGTYPE_BOOL, ARG_NOMINMAX}, { "power_off", &poweroff, "Command unit to power itself down", NULL, ARGTYPE_BOOL, ARG_NOMINMAX}, + { "erase_t", &eraset, "Erase existing courses when writing new ones", + NULL, ARGTYPE_BOOL, ARG_NOMINMAX}, { "resettime", &resettime, "Sync GPS time to computer time", NULL, ARGTYPE_BOOL, ARG_NOMINMAX}, { "category", &category, "Category number to use for written waypoints", @@ -1099,9 +1102,8 @@ track_write(void) int i, n; n = track_prepare(); - - GPS_Command_Send_Track(portname, tx_tracklist, n); - + GPS_Command_Send_Track(portname, tx_tracklist, n, (eraset)? 1 : 0); + for (i = 0; i < n; i++) { GPS_Track_Del(&tx_tracklist[i]); } @@ -1117,7 +1119,7 @@ course_write(void) n_trk = track_prepare(); GPS_Command_Send_Track_As_Course(portname, tx_tracklist, n_trk, - tx_waylist, n_wpt); + tx_waylist, n_wpt, (eraset)? 1 : 0); for (i = 0; i < n_wpt; ++i) { GPS_Way_Del(&tx_waylist[i]); diff --git a/jeeps/gpscom.c b/jeeps/gpscom.c index ee80f686f..1e9f0eaeb 100644 --- a/jeeps/gpscom.c +++ b/jeeps/gpscom.c @@ -259,7 +259,7 @@ int32 GPS_Command_Get_Track(const char *port, GPS_PTrack **trk, pcb_fn cb) ** @return [int32] success ************************************************************************/ -int32 GPS_Command_Send_Track(const char *port, GPS_PTrack *trk, int32 n) +int32 GPS_Command_Send_Track(const char *port, GPS_PTrack *trk, int32 n, int eraset) { int32 ret=0; @@ -278,7 +278,7 @@ int32 GPS_Command_Send_Track(const char *port, GPS_PTrack *trk, int32 n) /* Units with A302 don't support track upload, so we convert the * track to a course on the fly and send that instead */ - ret = GPS_Command_Send_Track_As_Course(port, trk, n, NULL, 0); + ret = GPS_Command_Send_Track_As_Course(port, trk, n, NULL, 0, eraset); break; default: GPS_Error("Send_Track: Unknown track protocol %d.", gps_trk_transfer); @@ -1168,7 +1168,7 @@ restart_course_points: ************************************************************************/ int32 GPS_Command_Send_Track_As_Course(const char *port, GPS_PTrack *trk, int32 n_trk, - GPS_PWay *wpt, int32 n_wpt) + GPS_PWay *wpt, int32 n_wpt, int eraset) { GPS_PCourse *crs = NULL; GPS_PCourse_Lap *clp = NULL; @@ -1179,8 +1179,13 @@ int32 GPS_Command_Send_Track_As_Course(const char *port, GPS_PTrack *trk, int32 int32 ret; /* Read existing courses from device */ - n_crs = GPS_Command_Get_Course(port, &crs, &clp, &ctk, &cpt, &n_clp, &n_ctk, &n_cpt, NULL); - if (n_crs < 0) return n_crs; + if (eraset) + n_crs = 0; + else { + n_crs = GPS_Command_Get_Course(port, &crs, &clp, &ctk, &cpt, &n_clp, &n_ctk, &n_cpt, NULL); + if (n_crs < 0) return n_crs; + } + /* Create new course+lap+track points for each track */ new_crs = n_crs; diff --git a/jeeps/gpscom.h b/jeeps/gpscom.h index e55fe8943..2105e8d0b 100644 --- a/jeeps/gpscom.h +++ b/jeeps/gpscom.h @@ -26,7 +26,7 @@ int32 GPS_Command_Get_Almanac(const char *port, GPS_PAlmanac **alm); int32 GPS_Command_Send_Almanac(const char *port, GPS_PAlmanac *alm, int32 n); int32 GPS_Command_Get_Track(const char *port, GPS_PTrack **trk, int (*cb)(int, struct GPS_SWay **)); -int32 GPS_Command_Send_Track(const char *port, GPS_PTrack *trk, int32 n); +int32 GPS_Command_Send_Track(const char *port, GPS_PTrack *trk, int32 n, int eraset); int32 GPS_Command_Get_Waypoint(const char *port, GPS_PWay **way,int (*cb)(int, struct GPS_SWay **)); int32 GPS_Command_Send_Waypoint(const char *port, GPS_PWay *way, int32 n, int (*cb)(struct GPS_SWay **)); @@ -43,7 +43,7 @@ int32 GPS_Command_Send_Course(const char *port, GPS_PCourse *crs, GPS_PCourse_L GPS_PTrack *trk, GPS_PCourse_Point *cpt, int32 n_crs, int32 n_clp, int32 n_trk, int32 n_cpt); int32 GPS_Command_Send_Track_As_Course(const char *port, GPS_PTrack *trk, int32 n_trk, - GPS_PWay *wpt, int32 n_wpt); + GPS_PWay *wpt, int32 n_wpt, int eraset); int32 GPS_Command_Get_Workout(const char *port, void **lap, int (*cb)(int, struct GPS_SWay **)); int32 GPS_Command_Get_Fitness_User_Profile(const char *port, void **lap, int (*cb)(int, struct GPS_SWay **));